package com.vision.mapper;

import com.vision.pojo.entity.Message;
import com.vision.pojo.vo.ChatUserVO;
import com.vision.pojo.vo.MessageVO;
import com.vision.pojo.vo.SystematicNotificationVO;
import org.apache.ibatis.annotations.Delete;
import org.apache.ibatis.annotations.Insert;
import org.apache.ibatis.annotations.Mapper;
import org.apache.ibatis.annotations.Select;

import java.util.List;

@Mapper
public interface MessageMapper {
    /**
     * 获取所有系统通知
     * @return 所有系统通知
     */
    List<SystematicNotificationVO> getAllSystematicNotification();

    /**
     * 获取所有同聊天的用户
     * @param userId 用户 id
     * @return 所有聊天记录
     */
    List<ChatUserVO> selectAllChatList(Integer userId);

    /**
     * 获取所有聊天记录
     * @param userId 用户 id
     * @param talkingId 目标对象聊天 id
     * @return 所有聊天记录
     */
    List<MessageVO> selectAllChatHistory(Integer userId, Integer talkingId);

    /**
     * 保存消息
     * @param message 消息对象
     */
    @Insert("insert into vs_message (sender_id,receiver_id,content,send_time,is_system) values (#{senderId},#{receiverId},#{content},now(),#{isSystem})")
    void insertMessage(Message message);

    /**
     * 删除聊天记录
     * @param userId 用户 id
     * @param talkingId 目标对象聊天 id
     */
    @Delete("delete from vs_message where (sender_id = #{userId} and receiver_id = #{talkingId}) or (sender_id = #{talkingId} and receiver_id = #{userId})")
    void deleteHistory(Integer userId, Integer talkingId);
}
